Slipstream  1.00  Viaccess Smartcard Emulator - User's Guide  

Disclaimer

Please note that using this software for anything other than educational purposes, might be illegal in your country. This software is the result of a personal educational project without any commercial interest.

Feature Overview

Quick start

Slipstream uses a Funvxs 1.2 compatible eeprom layout. Hence, you edit the eeprom of Slipstream with the same editors you are used to. In fact, your good old Funvxs 1.2 eeprom file can be used without any modifications together with the flash program file (ss_flash100.hex) and the internal eeprom file (ss_intee.hex). Bundled in this release are also a couple of external hex files that can be used as templates, having pre-configured consultation configuration sections (CAAC Reply). As soon as you have edited the external hex files with issuer and provider identities and keys (possibly also FAC) you are ready to program the card and it should bring colors to your TV screen.

However, in order to take full advantage of the feature set of Slipstream, you should carry on reading this User's Guide.

Hardware requirements

The software runs on any Funcard Wafer card with a 24C64 (8kByte) or larger external eeprom. Slipstream supports Protocol Type Selection, PTS and is designed to work with a wide range of CAMs; embedded as well as external CAMs.

Configuring Slipstream

Command answers

The answers to FAC commands 87 04 and 87 06 is configurable and essential for some STBs requiring this data to be correct. The answers to consultation commands are also configurable (CAAC reply) and for some STBs make a difference. To get a setup that works for most cases, base your external eeprom hex file on one of the supplied templates.

Configuration flags

The "LCD" flag in the configuration section of your editor activates the Lock Control Disable function. When activated it will effectively circumvent the 24-h PIN code locks present on some STBs. Leave the LCD flag unchecked if your STB does not feature a code entry lock. The other two configuration flags "Control LEDS" and "Key LEDS" have no meaning in the current version.

Entity sections

An entity can be an issuer entity or a provider entity. Slipstream allows multiple issuer entities to be inserted along with multiple provider entities on the same card. The configuration of the entity section must follow these rules:

  1. Issuer rules. The first issuer must be placed in the first entity position. Any additional issuers must follow in a consecutive order. The rightmost nibble of the issuer's 3-byte (6-nibble, 24-bit) identity must reflect its position. So, the first issuer has rightmost nibble 0, the second issuer 1, etc. An issuer must have a identity bit pattern in the form FF****.
  2. Provider rules. The first provider entity must be placed right after the last issuer entity. Any additional providers must follow in a consecutive order. The rightmost nibble of the provider identity is used to make an association with one of the of the declared issuers, in other words; point to the position of the associated issuer. A provider must not have a identity bit pattern in the form FF****.

For providers updated using UA/PPUA issuer updates, insert mkeys and UA/PPUA in the issuer entity.
For providers updated using UA/PPUA provider updates, insert mkeys and PPUA in the provider entity. If UA updates are used, UA is needed in the UA field of the associated issuer. Hence, the same format as in an original card is used. Only an issuer can carry an UA, the UA field in a provider entity is not used.

Look at it this way, every issued original card features one issuer with an UA and one or more providers. When you edit the Slipstream eeprom you gather all issuers in the first part of the entities section and give them increasing rightmost nibble numbers from 0 and up. Then you gather the providers in the following part of the entities section. The rightmost nibble of the provider associate each of them with the previously declared issuers. Slipstream entities section is a merger of multiple cards, in effect creating several Virtual Cards held by one real card. If you prefer the feature name Virtual Cards over Multi-Issuer;  it's up to you!

In order to set the rightmost nibble to a non-zero value you must have an editor allowing this, like FunProm. Picbined, on the other hand will not allow this, and can not be used if your configuration has multiple issuers. 

An example with three issuers. One real card acting as three virtual Viaccess cards. This example for Viasat with two issuers FFF400 (UA-issuer updates using mk05) and SVT Europa with one issuer FFF450 (UA provider updates using mk00):

Identity of entity Comment
FFF400 Insert UA + mk05 updating Ticket and Nordic
FFF401 Insert UA + mk05 updating Europe
FFF452 Insert UA updating SVT Europe
010C00
010C10 Uses 0:th issuer
010C20
010C30 Uses 0:th issuer
010C41 Uses 1:st issuer
009C02 Uses 2:nd issuer. Insert mk00 here 

The total number of issuers and providers is currently limited to 23. Even if its allowed, it does not make sense to declare more issuers than providers.

Also, always insert the fixed opkey 08 for the providers as it's used as a fallback key. For other examples on how to configure the entity section have a look at the template eeprom files included in the release.

Auto updating

Slipstream supports shared group key updates, and single customer key updates. For the shared group key updates, the full PPUA is used (SA + CustWp). CustWp == 0 is not a special case, so if set to 0 will work only if that particular customer in the group receives updates. This is to prevent fake updates from interfering with card operation. 

The switch of issuers is made when it becomes necessary only.

Remote updating

Remote opkey updating is accomplished using the change PIN code menu of your STB. The used format is the MultiMac key encoding format extended with prefix. Make sure the 4 digit prefix (Sidd index) is entered first, followed by the 8 four digit key codes. If your STB have a 24-h lock on changing PIN, you should try out the LCD feature.

On Screen Display

On Screen Display, OSD is provided by means of the Subscription Information list and Provider Labels. These fields are exchanged with information about the opkeys handled by Slipstream. Only the label of the currently active provider, defined by the channel selected on your STB, will be replaced with OSD information. All other provider label fields will present the label as edited in the eeprom file. To control the OSD mode the Purchase Threshold and/or Maturity Rating controls are used. Internally these two are coupled and you can use which one of them you prefer and have available on you STB. Setting one of them means setting both. Besides controlling the OSD mode the PT/MR can be used to enter commands to Slipstream. The OSD modes and commands are explained below:

OSD modes

To set a OSD mode, enter PT/MR equal to the desired mode number. Below is a list defining what the label field of the active provider will display for each OSD mode. Default mode after reset is 2.

For all OSD modes except for mode 0, the Subscription Information menu will present key history and information about how opkeys have been updated. When the card is taken in use it is advised to first perform a formatting of the eeprom section containing the information about the opkeys, the metadata section. This is described in Commands below.

The Subscription Information screen for the selected provider will contain a list of 8 rows that will look something like in this example:

START DATE

STOP DATE  CLASS  THEME  LEVEL
01/01/1980 01/01/1980 - 77    08
01/01/1980 01/01/1980 - 77

   09

09/02/2003 10/02/2003 - 115   110
01/01/1980 01/01/1980 - 77    11
10/02/2003 01/01/1980 - 115    12
01/01/1980 01/01/1980 - 77    13
21/01/2003 24/01/2003 - 200    14
01/01/1980 01/01/1980 - 77    15

START DATE => The date at which the opkey was first updated.
STOP DATE => The date when the opkey was last used. If START DATE > STOP DATE this means the updated key is a "next" key.
CLASS => not used.
THEME => Information about how the opkey was updated. Look at THEME as a three digit number "xyz":

Digit Information Description/encoding
x :  Update method 0 => AU using SA addressing, 1 => AU using UA addressing, 2 => Remote update
y :  Issuer/provider 0 => AU over provider, 1 => AU over issuer. Only relevant for AU updates.
z :  mkey Key index of used mkey. Only relevant for AU updates.

LEVEL => Index of the opkey about which the row gives information. Also, if the opkey is in use by the active channel, either 100 or 200 is added to the key index. 100 + index mean that key is in use and the key is correct. 200 + index mean that key is in use but the key stored in card is not correct.

So, looking back at the example screen above with the 8 rows of key information data we can tell that:

Some STBs sort the rows on basis of dates. This means that the order in which the rows is presented may differ from this example and when the dates changes. Remember to check the LEVEL value to be certain for which opkey each row applies to.

Commands

To send a command to Slipstream, enter the command number in the PT/MT menu. The previously selected OSD mode will not change, e.g. when PT/MT menu is re-entered the OSD mode will remain at the OSD mode present before the command was entered.

No other commands are defined in this version of Slipstream.

Phoenix Programming handles

Slipstream features built in external eeprom handles. Dedicated instructions make writing and reading of the external eeprom possible without re-programming the AVR controller with a loader. The access to the eeprom is made via any Phoenix or Smart mouse compatible ISO7816 interface.

An editor making use of the Slipstream eeprom handles offers a faster way to access provider data, as compared to a editor/programmer needing to overwrite the AVR program with a special loader or gateway software first. In Slipstream this gateway is already built in. 

The commands CB 25 and CB 26 below are implemented for accessing the eeprom. Maximum allowed length of the L byte is 100 decimal. All digits are in hexadecimal form. >> denotes data transfer in the direction towards the card. << denotes data transfer in the direction from the card.

Read instruction:
>> CB 25 < 2 bytes of address > < 1 byte, length L >
<< 25
<< < L bytes of data returned from card >
<< 90 00

Write instruction:
>> CB 26 < 2 bytes of address > < 1 byte, length L >
<< 26
>> < L bytes of data transferred to card >
<< 90 00

Release Bundle

The 1.00 release bundle consist of the following files:

File name Description
slipstream.htm This User's Guide
ss_flash100.hex AVR flash hex file, executable code
ss_intee.hex AVR internal eeprom hex file, algorithm look-up tables 
ss_extee_viasat2i.hex External eeprom hex file - example/template for Viasat with two issuers declared.
ss_extee_senda.hex External eeprom hex file - example/template for Senda
ss_extee_comhem_lcd.hex External eeprom hex file - example/template for Comhem. This file has LCD activated and has a dummy provider declared; because some receivers doesn't display the provider list if it only contains one provider.
ss_extee_loaded.hex External eeprom hex file - example/template loaded with more DVB-S issuers and providers you'll ever need... FAC set to Viasat.

Release History/Information

Version: 1.00, First public release made Mars 2003.

Author: Dauntless

Special Thanx: To all who have contributed - You know who you are!

Terms of use: Do not use the software for other purposes than educational. Do not re-bundle the release with additional or altered original files without authors approval. Violating any of these terms of use is considered disrespectful.